from flask import Flask,render_template,jsonify
from flask_cors import CORS
import pymysql

#       初始化flask
app=Flask(__name__)
#   允许与浏览器共享服务器资源
CORS(app)



#   定义获取mysql里面数据的方法
def get_data(sql):
    #   建立与mysql的连接
    connect=pymysql.connect(host='192.168.40.110',user='root',password='123456',database='qcl',charset='utf8')
    #   创建游标对象
    cursor=connect.cursor()
    #   执行sql语句，返回数据
    cursor.execute(sql)
    #   fetchall()函数返回一个列表。列表里面是元组，每一个元组是一行数据
    data=cursor.fetchall()
    #   存储转换成字典格式的数据
    data_dict=[]
    #   处理数据的格式
    for x in data:
        if len(x)==3:
            data_dict.append(
                {
                    "x":x[0],
                    "y":x[1],
                    "z":x[2]
                }
            )
        else:
            data_dict.append(
                {
                    "name":x[0],
                    "value":x[1]
                }
            )
    #   将数据返回
    return data_dict

#   立体柱状图的数据(每个区的平均租价和平均面积)
data1=get_data('select downtown,money_avg,area_avg from qcl.data_analysis01   ')
#   堆积图的数据
data2_0=get_data('select * from qcl.data_analysis02 where elevator=0 and not(downtown="怀柔") and not(downtown="北京周边") order by downtown')
data2_1=get_data('select * from qcl.data_analysis02 where elevator=1 and not(downtown="怀柔") and not(downtown="北京周边") order by downtown')
#   环形图的数据
data3=get_data('select * from qcl.data_analysis03')
#   词云图的数据
data4=get_data('select * from qcl.data_analysis04')
#   矩形树图的数据
data5=get_data('select * from qcl.data_analysis05')
#   横向柱状图的数据
data6=get_data('select plot,money,area from qcl.data_analysis06')

#   定义浏览器输入url跳转到可视化大屏
@app.route('/')
def index():
    return render_template(
        '可视化大屏展示.html',data1=data1,data2_0=data2_0,data2_1=data2_1,data3=data3,
        data4=data4,data5=data5,data6=data6
    )






#   启动flask渲染
#   在浏览器输入:   http://0.0.0.0:5000/qcl访问可视化大屏
if __name__=='__main__':
    app.run(debug=True,host='0.0.0.0',port=5000)
